package com.itheima.reggie.utils;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;

/**
 * 短信发送工具类
 */
public class SMSUtils {


	public static void main(String[] args) {
		//假如我这里是  用户点击了 获取验证码
		System.out.println("用户点击获取验证码");
		// 1:获取手机号
		String phoneNum = "13283707112";//前端页面获取
		//2: 产生验证码并发送
		// 怎么产生验证码---  之前web时候 见到怎么产生的  工具类
		// ValidateCodeUtils 产生纯数字验证码 和 数字字母验证码
		//  一般登录用哪个验证码? 纯数字
		Integer code = ValidateCodeUtils.generateValidateCode(4);
		// code 就是验证码
		System.out.println("产生验证码是:"+code);//从控制台看验证码
		                    //假设发成功了
		//  生产的 code 要存到 session中
		// 怎么发短信?
		// 安装阿里的规范发
      //签名
		String signName = "传智健康项目基手机号登录";
		String templateCode = "SMS_175532136";
		// 通过阿里云给 指定的手机 发生指定签名+模板的验证码
		//循环 定时器 一分钟发一次
		sendMessage(signName,templateCode,phoneNum,code+"");
		System.out.println("短信已经发完了");



	}
	/**
	 * 发送短信
	 * @param signName 签名
	 * @param templateCode 模板
	 * @param phoneNumbers 手机号
	 * @param param 参数
	 */
	public static void sendMessage(String signName,
								   String templateCode,String phoneNumbers,String param){
		DefaultProfile profile = DefaultProfile
			.getProfile("cn-hangzhou",
				"",
				"");
		IAcsClient client = new DefaultAcsClient(profile);

		SendSmsRequest request = new SendSmsRequest();
		request.setSysRegionId("cn-hangzhou");
		request.setPhoneNumbers(phoneNumbers);
		request.setSignName(signName);
		request.setTemplateCode(templateCode);
		request.setTemplateParam("{\"code\":\""+param+"\"}");
		try {
			SendSmsResponse response = client.getAcsResponse(request);
			System.out.println(response.getMessage());
			if(response.getMessage().contains("OK")){
				System.out.println("短信发送成功");
			}
		}catch (ClientException e) {
			e.printStackTrace();
		}
	}

}
